package designPatterns_demo.singleton_pattern.demo2;
/**
 * 
 *
 * Description: 6、双重检查[推荐用]
 *
 * Double-Check概念对于多线程开发者来说不会陌生，如代码中所示，我们进行了两次if (singleton == null)检查，
 * 这样就可以保证线程安全了。这样，实例化代码只用执行一次，后面再次访问时，判断if (singleton == null)，直接return实例化对象。
          优点：线程安全；延迟加载；效率较高。
 *
 * @author zhangxujun
 * @version 1.0
 * <pre>
 * Modification History: 
 * Date         Author			Version     Description 
 * ------------------------------------------------------------------ 
 * 2017年6月29日      zhangxujun       1.0         1.0 Version 
 * </pre>
 */
public class SingletonDemo6 {
	private static SingletonDemo6 instance;
	
	private SingletonDemo6() {}
	
	public static SingletonDemo6 getInstance() {
		if (null == instance) {
			synchronized (SingletonDemo6.class) {
				if (null == instance) {
					instance = new SingletonDemo6();
				}
			}
		}
		return instance;
	}
}
